Applying ordered modifications to recurring event instances

ABSTRACT

A method and system for the ordered modification of a recurring event in a calendaring application. A method for applying ordered modifications to recurring event instances, can include identifying an event exception which corresponds to a separately defined recurring event instance. Subsequently, at least one property of the recurring event instance can be modified based upon the event exception. Additional event exceptions corresponding to the recurring event instance can be further identified in accordance with a preferred aspect of the present invention. For each further identified additional event exception, at least one property of the recurring event instance can be further modified based upon the further identified additional event exception. Notably, each of the identifying and modifying steps can be repeated for additional recurring event instances.

BACKGROUND OF THE INVENTION Statement of the Technical Field

The present invention relates to calendaring systems and moreparticularly to scheduling recurring events in calendaring systems.

Description of the Related Art

Calendaring systems have formed the core component of personalinformation management software and firmware applications for decades.Initially, a mere calendar display, modern calendaring systems providescheduling and alarm functions in addition to full integration withcontact management, time entry, billing and project managementapplications. The typical calendaring application minimally provides amechanism for scheduling an event to occur on a certain date at acertain time. Generally, the event can be associated with a textualdescription of the event. More advanced implementations also permit theassociation of the scheduled event with a particular contact, aparticular project, or both. Furthermore, most calendar applicationsprovide functionality for setting an alarm prior to the occurrence ofthe event, as well as archival features.

One important feature of the calendaring system includes the ability toschedule a recurring event without requiring the end user toindividually set an event on each recurring date. For example, where ameeting is to occur every week on a particular time over the course ofseveral months, the end user can schedule the event as recurring everyweek at the particular time for the course of the several months. Thecalendaring system, in turn, can schedule each event in an automatedfashion based upon the recurring information. Advantageously, the enduser subsequently can modify any one of the recurring events, or the enduser can apply a single modification to all of the recurring eventsresponsive to which the calendaring system can apply the singlemodification to all of the recurring events in an automated fashion.

In recent years, computing has changed from a centralized model to adistributed model. Vast computer communications networks now coupletogether select users across the enterprise. Leveraging the wide reachof the modern enterprise, calendaring systems can incorporate multipleusers and the events scheduled by multiple users. In particular,“groupware” oriented calendaring systems can permit one user to view andschedule events of other, remotely positioned users. To further provideinteroperability between different types of calendaring systems, entirespecifications have been developed to accommodate the distributed anddisparate nature of the calendaring world. RFC2445 entitled “TheInternet Calendaring and Scheduling Core Object Specification(iCalendar)” represents one such effort.

Notably, distributed and interoperable calendaring systems, like theirstand-alone progeny, support the establishment of recurring eventswithout requiring the end user to set each individual recurring eventmanually. Yet, more recent calendaring implementations no longer simplyautomate the process of setting multiple events specified by asrecurring in nature. Rather, to conserve storage space, recurring eventscan be stored as a single event described as recurring in nature. Moreparticularly, in order to optimize for space, the storage model employedby advanced calendaring systems stores only the event data and therecurrence rule. The actual event instances can be calculateddynamically when a request is processed to retrieve events within acertain date range.

Importantly, modification to a recurring event can be applieduniversally, to single instances of the recurring event, to pastinstances of a recurring event, or to all future recurring events. Asdescribed in RFC2445, however, the modification of the recurring eventcan be applied internally to the recurring event. Specifically, therecurrence rule defined within the recurring event, itself, can includethe modifications to the recurrence rule. Interpreting and applying amodification to a recurrence rule in the conventional model, however,can be difficult and problematic for the uninitiated. Accordingly, itwould be preferable to incorporate a simplified system, method andapparatus for applying modifications to recurring events in acalendaring system.

SUMMARY OF THE INVENTION

The present invention addresses the deficiencies of the art in respectto modifying recurring event instances in a calendaring application andprovides a novel and non-obvious method, system and apparatus for theordered modification of a recurring event in a calendaring application.A method for applying ordered modifications to recurring eventinstances, can include identifying an event exception which correspondsto a separately defined recurring event instance. Subsequently, at leastone property of the recurring event instance can be modified based uponthe event exception.

Additional event exceptions corresponding to the recurring eventinstance can be further identified in accordance with a preferred aspectof the present invention. For each further identified additional eventexception, at least one property of the recurring event instance can befurther modified based upon the further identified additional eventexception. Notably, each of the identifying and modifying steps can berepeated for additional recurring event instances.

Event exceptions relating to the recurring event instance which havebecome stale also can be identified in accordance with the inventivearrangements. Once identified, the stale event exceptions can be purged.More specifically, event exceptions can be identified whose specifiedmodifications to event properties in the recurring event instance havebeen obviated by modifications specified in subsequently defined eventexceptions.

The present invention can be disposed in or associated with acalendaring system. A calendaring system which has been configured inaccordance with the present invention can include a recurrence eventexpander and a recurrence event modifier coupled to the recurrence eventexpander. In a preferred embodiment, a modification rule reducer alsocan be included in the calendaring system. Notably, the calendaringsystem can implement an iCalendar as specified in RFC 2445.

Additional aspects of the invention will be set forth in part in thedescription which follows, and in part will be obvious from thedescription, or may be learned by practice of the invention. The aspectsof the invention will be realized and attained by means of the elementsand combinations particularly pointed out in the appended claims. It isto be understood that both the foregoing general description and thefollowing detailed description are exemplary and explanatory only andare not restrictive of the invention, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute partof this specification, illustrate embodiments of the invention andtogether with the description, serve to explain the principles of theinvention. The embodiments illustrated herein are presently preferred,it being understood, however, that the invention is not limited to theprecise arrangements and instrumentalities shown, wherein:

FIG. 1 is a schematic illustration of a system for applying orderedmodifications to recurring event instances; and,

FIG. 2 is a flow chart illustrating a process for applying orderedmodifications to recurring event instances.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention is a system, method and apparatus for applyingordered modifications to recurring event instances. In accordance withthe present invention, an event storage model can include event data anda corresponding recurrence rule for each recurring event. Actual eventinstances can be calculated on demand based upon the recurrence rule.Notably, modifications to the event instances can specified separatelyfor specific event properties in the event instance. Only the modifiedproperties can be stored as an “event exception”. In this way,modifications to the event instances can be calculated concurrently withthe dynamic calculation of the event instances based upon the recurrencerule. Finally, stale event exceptions which have become obviated by theapplication of subsequent event exceptions can be purged from thestorage model periodically.

In further illustration of the preferred aspects of the presentinvention, FIG. 1 is a schematic illustration of a system for applyingordered modifications to recurring event instances. The system caninclude a recurrence event expander 120 disposed within a calendaringsystem (not shown). The recurrence event expander 120 can be programmedto expand recurrence events 150 into event instances 160 based upon theproperties specified within the recurrence events 150.

Notably, a recurrence event modifier 110 can be coupled to therecurrence event expander 120. The recurrence event modifier 110 canmodify properties within the event instances 160 based upon eventexceptions 140 defined for respective ones of the event instances 160.Based upon the modifications to the properties within the eventinstances 160, modified event instances 170 can be produced. In apreferred aspect of the present invention, each event exception caninclude the following data:

1. A reference to the recurring event instance that is to be modified;2. A flag indicating which properties have been modified;3. An entry for each modified property;4. A date stamp that indicates when the modification was created; and,5. A range flag that indicates whether the modification is to be appliedonly the referenced instance, to the referenced instance and allsubsequent instances, or to the reference instance and all previousinstances.

It will be recognized by the skilled artisan that over time,modifications to event instance properties reflected in the eventexceptions 140 can become stale based upon the modifications to the sameevent instance properties reflected in subsequent ones of the eventexceptions 140. To further optimize the storage space consumed by theevent exceptions 140, a modification rule reducer 130 can be coupled tothe recurrence event modifier 110. The modification rule reducer 130 caninspect older ones of the event exceptions 140 to detect stale eventexceptions. For example, the modification rule reducer 130 can build alist of event properties modified by different event exceptions 140.Only the most recent ones of the event exceptions 140 can be maintainedwhile others can be purged.

The process of modifying event instances in accordance with the presentinvention is shown in the flow chart of FIG. 2. Beginning in block 205,a first recurrence event can be retrieved. In block 210, one or moreevent instances can be generated from the recurrence event. In block215, a first generated event instance can be retrieved for processing.Subsequently, in block 220 event exceptions for the first generatedevent instance can be identified. In block 225, a first one of theidentified event exceptions can be retrieved for processing. Finally, inblock 230, one or more modifications to a property or properties in theevent instance specified in the event exception can be applied to theevent instance.

In decision block 235, it can be determined whether additional eventexceptions have been identified for the first generated event instance.If so, in block 240, a next identified event exception can be retrievedfor processing. Once retrieved, any modifications to a property orproperties in the event instance specified in the event exception can beapplied to the event instance. Subsequently, the process can repeat inblocks 235 and 240 for each remaining event exception identified for thefirst generated event instance. When complete, in block 245, it can bedetermined whether additional event instances remain to be processed. Ifso, the process can continue through block 250.

In block 250, the next generated event instance can be retrieved forprocessing. Subsequently, exceptions for the next generated eventinstance can be located and applied in blocks 220 through 245. Theforegoing process can be repeated for each generated instance based uponthe first recurrence event. In block 245, when no more event instancesremain to be processed, in decision block 255 it can be determinedwhether additional recurrence events remain to be processed. If so, inblock 260 the next recurrence event can be retrieved, event instancescan be generated for the next recurrence event and the process of blocks210 through 260 can repeat. Once no more recurrence events remain to beprocessed, the event exceptions can be reduced 265 by purging staleevent exceptions.

The present invention can be realized in hardware, software, or acombination of hardware and software. For example, the data handlingpolicy can be stored in a database. An implementation of the method andsystem of the present invention can be realized in a centralized fashionin one computer system, or in a distributed fashion where differentelements are spread across several interconnected computer systems. Anykind of computer system, or other apparatus adapted for carrying out themethods described herein, is suited to perform the functions describedherein. For example, the data handling policy can be stored in adatabase.

A typical combination of hardware and software could be a generalpurpose computer system having a central processing unit and a computerprogram stored on a storage medium that, when loaded and executed,controls the computer system such that it carries out the methodsdescribed herein. The present invention can also be embedded in acomputer program product, which comprises all the features enabling theimplementation of the methods described herein, and which, when loadedin a computer system is able to carry out these methods. Storage mediumrefers to any volatile or non-volatile storage device.

Computer program or application in the present context means anyexpression, in any language, code or notation, of a set of instructionsintended to cause a system having an information processing capabilityto perform a particular function either directly or after either or bothof the following a) conversion to another language, code or notation; b)reproduction in a different material form. Significantly, this inventioncan be embodied in other specific forms without departing from thespirit or essential attributes thereof, and accordingly, referenceshould be had to the following claims, rather than to the foregoingspecification, as indicating the scope of the invention.

1.-13. (canceled)
 14. A method for applying ordered modifications torecurring event instances, the method comprising the steps of:calculating on demand in a calendaring system executing in memory by aprocessor of a computer one or more event instances for a recurringevent based on a recurrence rule; specifying separately from the one ormore event instances specific event properties as modifications to theone or more event instances and storing only the modified properties asan exception to the one or more event instances, but inspecting olderones of the one or more event exceptions to detect stale one or moreevent exceptions purging said identified one or more event exceptionsthat are stale; and concurrently applying the modifications to the oneor more event instances when calculating on demand one or more eventinstances for the recurring event based on the recurrence rule, eachevent exception including a reference to an event instance of the one ormore event instances to be modified, a date stamp indicating when amodification was created, and a range flag indicating whether themodification is to be applied only the referenced instance, to thereferenced instance and all subsequent instances, or to the referenceinstance and all previous instances.
 15. The method of claim 14, furthercomprising the steps of: identifying an event exception from the one ormore event exceptions, the event exception corresponding to an eventinstance of the one or more event instances; modifying at least oneproperty of said event instance based upon said identified eventexception; further identifying an additional event exception from theone or more event exceptions, the additional event exceptioncorresponding to said event instance; and, for the identified additionalevent exception, further modifying at least one property of said eventinstance based upon the further identified additional event exceptions.16. The method of claim 15, further comprising the step of repeatingsaid identifying and modifying steps for additional ones of the eventinstances.
 17. A calendaring system comprising: a computer withprocessor and memory; a recurrence event expander configured forcalculating on demand one or more event instances for a recurring eventbased on a recurrence rule; a recurrence event coupled to saidrecurrence event expander and configured for specifying separately fromthe one or more event instances specific event properties asmodifications to the one or more event instances and storing only themodified properties as an exception to the one or more event instances,concurrently applying the modifications to the one or more eventinstances when calculating on demand one or more event instances for therecurring event based on the recurrence rule, each event exceptiondefined for one of the one or more event instances and separately storedfrom the one or more event instances, each event exception including areference to an event instance of the one or more event instances to bemodified, a date stamp indicating when a modification was created, and arange flag indicating whether the modification is to be applied only thereferenced instance, to the referenced instance and all subsequentinstances, or to the reference instance and all previous instances; and,a modification rule reducer coupled to the recurrence event modifier,the modification rule reducer inspecting older ones of the one or moreevent exceptions to detect stale one or more event exceptions.
 18. Thesystem of claim 17, wherein the calendaring system implements aniCalendar.
 19. A non-transitory machine readable storage medium havingstored thereon a computer program for applying ordered modifications torecurring event instances, the computer program comprising a routine setof instructions which when executed by a machine cause the machine toperform the steps of: calculating on demand in a calendaring systemexecuting in memory by a processor of a computer one or more eventinstances for a recurring event based on a recurrence rule; specifyingseparately from the one or more event instances specific eventproperties as modifications to the one or more event instances andstoring only the modified properties as an exception to the one or moreevent instances, but inspecting older ones of the one or more eventexceptions to detect stale one or more event exceptions purging saididentified one or more event exceptions that are stale; and concurrentlyapplying the modifications to the one or more event instances whencalculating on demand one or more event instances for the recurringevent based on the recurrence rule, each event exception including areference to an event instance of the one or more event instances to bemodified, a date stamp indicating when a modification was created, and arange flag indicating whether the modification is to be applied only thereferenced instance, to the referenced instance and all subsequentinstances, or to the reference instance and all previous instances. 20.The machine readable storage medium of claim 19, further comprising thesteps of: identifying an event exception from the one or more eventexceptions, the event exception corresponding to an event instance ofthe one or more event instances; modifying at least one property of saidevent instance based upon said identified event exception; furtheridentifying an additional event exception from the one or more eventexceptions, the additional event exception corresponding to said eventinstance; and, for the identified additional event exception, furthermodifying at least one property of said event instance based upon thefurther identified additional event exceptions.
 21. The machine readablestorage medium of claim 19, further comprising the step of repeatingsaid identifying and modifying steps for additional ones of the eventinstances.